﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Practices.Unity;
using Sispe.BussinesLogic;
using Sispe.Entities;

namespace Sispe.UI
{
    public partial class FrmInputDialog : Form
    {
        [Dependency]
        public ILiquidacionBL liquidacionBL { get; set; }

        [Dependency]
        public IContratoBL contratoBL { get; set; }

        public void Nuevo()
        {
            lIQUIDACIONBindingSource.AddNew();
        }

        public FrmInputDialog()
        {
            InitializeComponent();
            this.BuildUp();
        }

        public CONTRATO current
        {
            get { return cONTRATOBindingSource.Current as CONTRATO;}
            set { cONTRATOBindingSource.DataSource = value;} 
        }


        public bool SeguirTrabajando;
        public int IdContrato;
        public int IdTipoPersonal;

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            var msg = "ERROR";

            var contrato = contratoBL.GetFromContratoById(IdContrato);

            try
            {
                var liquidacion = new LIQUIDACION()
                {
                    IdContrato = contrato.IdContrato,
                    Observaciones = observacionesTextBox.Text.ToUpper(),
                    SeguiraTrabajando = SeguirTrabajando
                };

                if (IdTipoPersonal == 1 || IdTipoPersonal == 2) // staff - empleado
                {
                    var hojaliquidacion = new HOJA_FIN_RECORRIDO_LIQUIDACIONES() // Hoja de Liquidacion para Staff - Empleado
                    {
                        IdLiquidacion = liquidacion.IdLiquidacion,
                        AD_Camara = false,
                        AD_Celular = false,
                        AD_Fecha = DateTime.Now.Date,
                        AD_Modem = false,
                        AD_Otros = false,
                        AD_OtrosComentario = "",
                        AD_VistoBueno = false,
                        LA_EPP = false,
                        LA_EPPComentario = "",
                        LA_Otros = false,
                        LA_OtrosComentario = "",
                        LA_Fecha = DateTime.Now.Date,
                        LA_Radio = false,
                        LA_VistoBueno = false,
                        LT_Fecha = DateTime.Now.Date,
                        LT_Vehiculo = false,
                        LT_Otros = false,
                        LT_OtrosComentario = "",
                        LT_VistoBueno = false,
                        LS_CorreoCorporativo = false,
                        LS_Desktop = false,
                        LS_Fecha = DateTime.Now.Date,
                        LS_Laptop = false,
                        LS_Otros = false,
                        LS_OtrosComentario = "",
                        LS_VistoBueno = false,
                        LO_Fecha = DateTime.Now.Date,
                        LO_VistoBueno = false,
                        RRHH_ExamenRetiro = false,
                        RRHH_Fecha = DateTime.Now.Date,
                        RRHH_Fotocheck = false,
                        RRHH_Otros = false,
                        RRHH_OtrosComentario = "",
                        RRHH_VistoBueno = false,
                        OP_Fecha = DateTime.Now.Date,
                        OP_InformeDigital = false,
                        OP_InformeFisico = false,
                        OP_Otros = false,
                        OP_OtrosComentario = "",
                        OP_VistoBueno = false,
                        ADGRAL_VistoBueno = false,
                        ADGRAL_Fecha = DateTime.Now.Date
                    };

                    liquidacion.HOJA_FIN_RECORRIDO_LIQUIDACIONES = hojaliquidacion;
                    if (contrato.ESPECIALIDAD.IdCategoria != 5 || contrato.ESPECIALIDAD.IdCategoria != 19)
                    {
                        var hojaRecOperacioes = new HOJA_RECORRIDO_OPERACIONES()
                        {
                            IdHojaRecorrido = liquidacion.IdLiquidacion,
                            IP_001 = false,
                            IP_002 = false,
                            IP_003 = false,
                            IP_004 = false,
                            IP_005 = false,
                            IP_006 = false,
                            IP_007 = "",
                            JOF = false,
                            JOF_Fecha = DateTime.Now.Date,
                            JOF_IC_001 = false,
                            JOF_IC_002 = false,
                            JOF_IC_003 = false,
                            JOF_IC_004 = false,
                            JOF_IC_005 = "",
                            JP_001 = false,
                            JP_002 = false,
                            JP_003 = false,
                            JP_004 = "",
                            OC_001 = "",
                            OC_Documentos = "",
                            RE_001 = false,
                            RE_002 = false,
                            RE_003 = false,
                            RE_004 = "",
                            SC_001 = false,
                            SC_002 = false,
                            SC_003 = false,
                            SC_004 = false,
                            SC_005 = "",
                            SCC_001 = false,
                            SCC_002 = false,
                            SCC_003 = false,
                            SCC_004 = "",
                            SPP_001 = false,
                            SPP_002 = false,
                            SPP_003 = false,
                            SPP_004 = ""
                        };
                        
                        liquidacion.HOJA_FIN_RECORRIDO_LIQUIDACIONES.HOJA_RECORRIDO_OPERACIONES = hojaRecOperacioes;
                    }
                }
                else
                {
                    //Hoja Recorrido Obrero
                    var hojaObrero = new HOJA_FIN_RECORRIDO_OBRERO()
                    {
                        IdLiquidacion = liquidacion.IdLiquidacion,
                        AC_EPP = false,
                        AC_EPPCOmentario = "",
                        AC_EquiposVarios = false,
                        AC_Fecha = DateTime.Now.Date,
                        AC_Herramientas = false,
                        AC_Otros = false,
                        AC_OtrosComentario = "",
                        AC_VistoBueno = false,
                        RRHH_ExamenRetiro = false,
                        RRHH_Fecha = DateTime.Now.Date,
                        RRHH_Fotocheck = false,
                        RRHH_Otros = false,
                        RRHH_OtrosComentario = "",
                        RRHH_VistoBueno = false
                    };
                    liquidacion.HOJA_FIN_RECORRIDO_OBRERO = hojaObrero;
                }

                liquidacionBL.AddLiquidacion(liquidacion);
                MessageBox.Show("Registro Correcto", "Registro", MessageBoxButtons.OK, MessageBoxIcon.Information);

                //Modificamos el Estado de "Liquidado" para el contrato; pasa a "True"
                contrato.Liquidado = true;
                contratoBL.UpdateContrato(contrato);
                this.Close();
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                MessageBox.Show(msg, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void FrmInputDialog_Load(object sender, EventArgs e)
        {
            cONTRATOBindingSource.DataSource = contratoBL.GetFromContratoById(IdContrato); ;
        }
    }
}
